perm filename CH.LST[MF,DEK] blob sn#760410 filedate 1984-07-04 generic text, type T, neo UTF8
  1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK]	7-04-84 10:18	pages 3,3

**** File 1) INITEX.CH[TEX,SYS]/3P/3L
1)	@y
1)	@d banner=='This is TeX, WAITS Version 1.1' {printed when \TeX\ starts}
1)	@z
**** File 2) BUGTEX.CH[TEX,DEK]/3P/3L
2)	@y [Actually the standard banner is used so that TRIP.LOG looks normal]
2)	@d banner=='This is TeX, Version 1.1' {printed when \TeX\ starts}
2)	@z
***************


**** File 1) INITEX.CH[TEX,SYS]/4P/14L
1)	@d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
1)	@d gubed==@t@>@} {change this to `$\\{gubed}\equiv\null$' when debugging}
1)	@f debug==begin
**** File 2) BUGTEX.CH[TEX,DEK]/4P/14L
2)	@d debug== {change this to `$\\{debug}\equiv\null$' when debugging}
2)	@d gubed== {change this to `$\\{gubed}\equiv\null$' when debugging}
2)	@f debug==begin
***************


**** File 1) INITEX.CH[TEX,SYS]/6P/5L
1)	@{@&$C-,A+,D-,W+,H:0@}
1)		{no range check, catch arithmetic overflow, no debug overhead, no heap}
1)	@!debug @{@&$C+,D:5,W+@}@+ gubed {but turn everything on when debugging}
1)	{the `|W+|' switch catches more syntax errors}
1)	{the `\ignorespaces|D:5|' avoids initial stop for the debugger}
**** File 2) BUGTEX.CH[TEX,DEK]/6P/5L
2)	@{@&$C-,A+,D-,W+@}
2)		{no range check, catch arithmetic overflow, no debug overhead}
2)	@!debug @{@&$C+,D:5,W+,Z:@=377777777777B@>@}@+ gubed
2)		{but turn everything on when debugging}
2)	{the `|W+|' switch catches more syntax errors}
2)	{the `|Z|' switch sets variables to maxint before they receive a value}
2)	{the `\ignorespaces|D:5|' avoids initial stop for the debugger}
***************


**** File 1) INITEX.CH[TEX,SYS]/7P/37L
1)	@!mem_max=33000; {greatest index in \TeX's internal |mem| array;
1)		must be strictly less than |max_halfword|;
1)		also, for \ph, we must keep total variable storage < 128K words}
1)	@!buf_size=500; {maximum number of characters simultaneously present in
**** File 2) BUGTEX.CH[TEX,DEK]/7P/37L
2)	@!mem_max=3000; {greatest index in \TeX's internal |mem| array;
2)		must be strictly less than |max_halfword|;
2)		this is the value appropriate to the \.{TRIP} test file}
  1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK]	7-04-84 10:18	pages 7,7

2)	@!buf_size=500; {maximum number of characters simultaneously present in
***************


**** File 1) INITEX.CH[TEX,SYS]/7P/43L
1)	@!error_line=80; {width of context lines on terminal error messages}
1)	@!half_error_line=50; {width of first lines of contexts in terminal
1)		error messages; should be between 30 and |error_line-15|}
1)	@!max_print_line=80; {width of longest text lines output; should be at least 60}
1)	@!stack_size=200; {maximum number of simultaneous input sources}
**** File 2) BUGTEX.CH[TEX,DEK]/7P/43L
2)	@!error_line=64; {width of context lines on terminal error messages}
2)	@!half_error_line=32; {width of first lines of contexts in terminal
2)		error messages; should be between 30 and |error_line-15|}
2)	@!max_print_line=72; {width of longest text lines output; should be at least 60}
2)	@!stack_size=200; {maximum number of simultaneous input sources}
***************


**** File 1) INITEX.CH[TEX,SYS]/7P/50L
1)	@!font_max=100;
1)		{maximum internal font number; must not exceed |max_quarterword|}
1)	@!font_mem_size=23000; {number of words of |font_info| for all fonts}
1)	@!param_size=60; {maximum number of simultaneous macro parameters}
**** File 2) BUGTEX.CH[TEX,DEK]/7P/50L
2)	@!font_max=75;
2)		{maximum internal font number; must not exceed |max_quarterword|}
2)	@!font_mem_size=20000; {number of words of |font_info| for all fonts}
2)	@!param_size=60; {maximum number of simultaneous macro parameters}
***************


**** File 1) INITEX.CH[TEX,SYS]/7P/63L
1)	@!save_size=300; {space for saving values outside of current group; must be
1)		at most |max_halfword|}
**** File 2) BUGTEX.CH[TEX,DEK]/7P/63L
2)	@!save_size=600; {space for saving values outside of current group; must be
2)		at most |max_halfword|}
***************


**** File 1) INITEX.CH[TEX,SYS]/8P/15L
1)	@d hi_mem_base=25000 {smallest index in the single-word area of |mem|;
1)		must be substantially larger than |mem_base| and smaller than |mem_max|}
**** File 2) BUGTEX.CH[TEX,DEK]/8P/15L
2)	@d hi_mem_base=2300 {smallest index in the single-word area of |mem|;
2)		must be substantially larger than |mem_base| and smaller than |mem_max|}
***************
  1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK]	7-04-84 10:18	pages 8,8



**** File 1) INITEX.CH[TEX,SYS]/15P/4L
1)	@y
1)	@<Character |k| cannot be printed@>=
1)		(k=@'177)∨(k in [0,@'11..@'15,@'33])
1)	@z
**** File 2) BUGTEX.CH[TEX,DEK]/15P/4L
2)	@y [no change when running the TRIP test]
2)	@<Character |k| cannot be printed@>=
2)		(k<" ")∨(k>"~")
2)	@z
***************


**** File 1) INITEX.CH[TEX,SYS]/18P/9L
1)	The values defined here are recommended for most 36-bit computers.
1)	@d min_quarterword=0 {smallest allowable value in a |quarterword|}
**** File 2) BUGTEX.CH[TEX,DEK]/18P/9L
2)	The values defined here are recommended for most 36-bit computers,
2)	except |max_halfword| is strange (just to make the test hairier).
2)	@d min_quarterword=0 {smallest allowable value in a |quarterword|}
***************


**** File 1) INITEX.CH[TEX,SYS]/18P/14L
1)	@d max_halfword==262143 {largest allowable value in a |halfword|}
1)	@z
**** File 2) BUGTEX.CH[TEX,DEK]/18P/15L
2)	@d max_halfword==32768 {largest allowable value in a |halfword|}
2)	@z
***************


**** File 1) INITEX.CH[TEX,SYS]/19P/15L
1)	@y
1)	The inner loop of \TeX\ will run faster with respect to compilers
**** File 2) BUGTEX.CH[TEX,DEK]/19P/15L
2)	@y We leave in "+0" and "-0" to catch errors of missing parentheses.
2)	The inner loop of \TeX\ will run faster with respect to compilers
***************


**** File 1) INITEX.CH[TEX,SYS]/19P/22L
1)	@d qi(#)==# {to put an |eight_bits| item into a quarterword}
1)	@d qo(#)==# {to take an |eight_bits| item from a quarterword}
1)	@d hi(#)==# {to put a sixteen-bit item into a halfword}
1)	@d ho(#)==# {to take a sixteen-bit item from a halfword}
  1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK]	7-04-84 10:18	pages 19,19

1)	@z
**** File 2) BUGTEX.CH[TEX,DEK]/19P/22L
2)	@d qi(#)==0+#+0 {to put an |eight_bits| item into a quarterword}
2)	@d qo(#)==0+#-0 {to take an |eight_bits| item from a quarterword}
2)	@d hi(#)==0+#+0 {to put a sixteen-bit item into a halfword}
2)	@d ho(#)==0+#-0 {to take a sixteen-bit item from a halfword}
2)	@z
***************


**** File 1) INITEX.CH[TEX,SYS]/31P/2L
1)	allows both lowercase and uppercase letters in the file name.
1)	@↑system dependencies@>
1)	@d append_to_name(#)==begin c←#; incr(k);
1)	@y
1)	converts lowercase letters to uppercase.
1)	A special convention is used here with respect to font metric files: If the
1)	file name is longer than six characters (e.g., `\.{helvetica}' or
1)	`\.{oldenglish}'), we abbreviate it by retaining the first three and
1)	last three characters (e.g., `\.{helica}' or `\.{oldish}').
1)	@↑system dependencies@>
1)	@d append_to_name(#)==begin c←#; incr(k);
1)		if (c≥"a")∧(c≤"z") then c←c-@'40; {convert to uppercase}
1)	@z
1)	@x
1)	for j←str_start[a] to str_start[a+1]-1 do append_to_name(str_pool[j]);
**** File 2) BUGTEX.CH[TEX,DEK]/31P/2L
2)	for j←str_start[a] to str_start[a+1]-1 do append_to_name(str_pool[j]);
***************


**** File 1) INITEX.CH[TEX,SYS]/31P/23L
1)	if (e=".tfm")∧(length(n)>6) then
1)		begin for j←str_start[n] to str_start[n]+2 do
1)			append_to_name(str_pool[j]);
1)		for j←str_start[n+1]-3 to str_start[n+1]-1 do
1)			append_to_name(str_pool[j]);
1)		end
1)	else for j←str_start[n] to str_start[n+1]-1 do append_to_name(str_pool[j]);
1)	for j←str_start[e] to str_start[e+1]-1 do append_to_name(str_pool[j]);
**** File 2) BUGTEX.CH[TEX,DEK]/31P/6L
2)	j←".tfm"; {this keeps \.{tex.pool} the same as in production \TeX}
2)	for j←str_start[n] to str_start[n+1]-1 do append_to_name(str_pool[j]);
2)	for j←str_start[e] to str_start[e+1]-1 do append_to_name(str_pool[j]);
***************


**** File 1) INITEX.CH[TEX,SYS]/33P/3L
  1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK]	7-04-84 10:18	pages 33,33

1)	possible version number) of a file that has been opened. The following routine,
1)	which simply makes a \TeX\ string from the value of |name_of_file|, should
1)	ideally be changed to deduce the full name of file~|f|, if it is
1)	possible to do this in a \PASCAL\ program.
1)	@↑system dependencies@>
1)	@p function make_name_string:str_number;
1)	var k:1..file_name_size; {index into |name_of_file|}
1)	begin str_room(name_length);
1)	for k←1 to name_length do append_char(xord[name_of_file[k]]);
1)	make_name_string←make_string;
1)	end;
1)	function a_make_name_string(var f:alpha_file):str_number;
1)	begin a_make_name_string←make_name_string;
1)	end;
1)	function b_make_name_string(var f:byte_file):str_number;
1)	begin b_make_name_string←make_name_string;
1)	end;
1)	function w_make_name_string(var f:word_file):str_number;
1)	begin w_make_name_string←make_name_string;
1)	end;
1)	@y
1)	@ Operating systems often make it possible to determine the exact name (and
1)	possible version number) of a file that has been opened. The following routine,
1)	due to David Fuchs, deduces the full name of file~|f| on {\mc WAITS}:
1)	@↑system dependencies@>
1)	@↑Fuchs, David Raymond@>
1)	@p procedure cur_nam(var chan:f@&i@&l@&e;var s:string); extern; @t\2@>@/
1)	function make_name_string(var f:f@&i@&l@&e):str_number;
1)	var s:packed array[1..24] of char;
1)	@!k:1..24; {file names at {\sc SAIL} have at most 23 characters}
1)	begin cur_nam(f,s); str_room(24); k←1;
1)	while ord(s[k])≠0 do
1)		begin append_char(xord[s[k]]); incr(k);
1)		end;
1)	make_name_string←make_string;
1)	end;
1)	function a_make_name_string(var f:alpha_file):str_number;
1)	begin a_make_name_string←make_name_string(f);
1)	end;
1)	function b_make_name_string(var f:byte_file):str_number;
1)	begin b_make_name_string←make_name_string(f);
1)	end;
1)	function w_make_name_string(var f:word_file):str_number;
1)	begin w_make_name_string←make_name_string(f);
1)	end;
1)	@z
**** File 2) BUGTEX.CH[TEX,DEK]/33P/3L
2)	@y We don't change them in BUGTEX
  1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK]	7-04-84 10:18	pages 33,33

2)	@ Operating systems often make it possible to determine the exact name (and
2)	@z
***************